<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>

<!--  this stylesheet contains all the utility templates used in other stylesheets -->

<!-- ==================================
	 General, text formatting templates
	 ================================== -->
<xsl:template match="bold">
	<span class="b"><xsl:apply-templates/></span>
</xsl:template>

<xsl:template match="line-break">
	<br/>
</xsl:template>

<xsl:template match="nb">
	<span class="i"><xsl:apply-templates/></span>
</xsl:template>

<xsl:template match="nbb">
	<span class="bi"><xsl:apply-templates/></span>
</xsl:template>

<!-- ======================
	 User-related templates
	 ====================== -->

<xsl:template name="user_name">
	<xsl:value-of select="$x_identity/name"/>
</xsl:template>

<!-- ======================
	 Link-related templates
	 ====================== -->

<xsl:template match="lnk"> 
	<a><xsl:if test="$x_device='screen'">
			<xsl:attribute name="href">
				<xsl:call-template name='url'>
					<xsl:with-param name="link"><xsl:value-of select="@name"/></xsl:with-param>
			 	</xsl:call-template>
			</xsl:attribute>
		</xsl:if>
		<xsl:apply-templates/>
	</a>
</xsl:template>

<!-- =======================
	 Named templates section
	 ======================= -->

<!-- this template creates a link to a url ie an 'href'. -->
<!-- it expects the current node to contain a 'url' element with 'section' and 'page' attributes-->
<!-- parameter 'type' is either 'txt' or 'img' -->
<xsl:template name='url_link'>
	<xsl:param name="type"/>
	<xsl:param name="prompt"/>
	<a><xsl:if test="$x_device='screen'">
			<xsl:attribute name='href'>
				<xsl:call-template name='url'>
					<xsl:with-param name="link"><xsl:value-of select='@name'/></xsl:with-param>
				</xsl:call-template>
			</xsl:attribute>
		</xsl:if>
		<xsl:choose>
			<xsl:when test="$type='img'">
				<xsl:copy-of select='$prompt'/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select='$prompt'/>
			</xsl:otherwise>
		</xsl:choose></a></xsl:template>

<!-- this template creates the url string. it is taken out of 'url_link' (above) for 
	 consistency and single handling of url with '$x_baseurl' etc -->
<xsl:template name='url'>
	<xsl:param name="link"/>
	<xsl:variable name="this-link" select="//lnk[@name=$link][1]"/>
	<xsl:choose>
		<xsl:when test="$this-link/source[@type='service'] or $this-link/source[@type='form'] or $this-link/source[@type='exhtml']">
			<xsl:value-of select='$x_baseurl'/>
			<xsl:value-of select='$this-link/@name'/>
			<xsl:text>&amp;type=</xsl:text>
			<xsl:value-of select='$this-link/source/@type'/>
			<xsl:text>&amp;name=</xsl:text>
			<xsl:value-of select='$this-link/source/@name'/>
			<xsl:text>&amp;process=</xsl:text>
			<xsl:value-of select='$this-link/source/@process'/>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='data']">
			<xsl:value-of select='$x_dataurl'/>
			<xsl:value-of select='$this-link/@name'/>
			<xsl:text>&amp;type=</xsl:text>
			<xsl:value-of select='$this-link/source/@type'/>
			<xsl:text>&amp;name=</xsl:text>
			<xsl:value-of select='$this-link/source/@name'/>
			<xsl:text>&amp;process=</xsl:text>
			<xsl:value-of select='$this-link/source/@process'/>
			<xsl:text>&amp;device=data</xsl:text>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='mail']">
			<xsl:text>mailto:</xsl:text>
			<xsl:value-of select='$this-link/source'/>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='www']">
			<xsl:text>javascript:x_PopExternal('</xsl:text>
			<xsl:text>http://</xsl:text>
			<xsl:value-of select='$this-link/source'/>
			<xsl:text>');</xsl:text>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='flash']">
			<xsl:text>javascript:x_PopFlash('</xsl:text>
			<xsl:value-of select='$this-link/source'/>
			<xsl:text>');</xsl:text>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='file']">
			<xsl:text>javascript:x_PopDownload('</xsl:text>
			<xsl:value-of select="$x_serverurl"/>
			<xsl:text>download/</xsl:text>
			<xsl:value-of select="$this-link/source"/>
			<xsl:text>');</xsl:text>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='local']">
			<xsl:value-of select='$x_serverurl'/>
			<xsl:value-of select='$this-link/source'/>
			<xsl:text>&amp;link=</xsl:text>
			<xsl:value-of select='$this-link/@name'/>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='pop']">
			<xsl:text>javascript:x_PopUp('</xsl:text>
			<xsl:value-of select='$x_popurl'/>
			<xsl:value-of select='$this-link/@name'/>
			<xsl:text>');</xsl:text>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='popwww']">
			<xsl:text>javascript:x_PopUp('</xsl:text>
			<xsl:text>http://</xsl:text>
			<xsl:value-of select='$this-link/source'/>
			<xsl:text>');</xsl:text>
		</xsl:when>
		<xsl:when test="$this-link/source[@type='demo']">
			<xsl:text>javascript:x_demo('demo/</xsl:text>
			<xsl:value-of select='$this-link/source'/>
			<xsl:text>');</xsl:text>
		</xsl:when>
		<xsl:otherwise>
			<xsl:choose>
				<xsl:when test="$want_xslout='yes'">
					<xsl:value-of select='$xsl_baseurl'/>
					<xsl:value-of select='$this-link/@name'/>
				</xsl:when>
				<xsl:when test="$want_template='yes'">
					<!-- Intraweb tag format -->
					<xsl:text>{%iwlnk</xsl:text>
					<xsl:value-of select='$this-link/@page'/>
					<xsl:value-of select='$this-link/@proc'/>
					<xsl:text>%}</xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select='$x_baseurl'/>
					<xsl:value-of select='$this-link/@name'/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<!-- As above, but no checking of the link is done and can only do links within the site 
	 (ie no type=pop/www/local etc) -->
<xsl:template name='simple-link'>
	<xsl:param name="link"/>
	<xsl:choose>
		<xsl:when test="$want_xslout='yes'">
			<xsl:value-of select='$xsl_baseurl'/>
			<xsl:value-of select='$link'/>
		</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select='$x_baseurl'/>
			<xsl:value-of select='$link'/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<!-- template to call 'url' by specifying the link explicitly.
	 - can be used in place of 'simple-link' when lnk's available
	 - call as:
<xsl:call-template name="site-link">
	<xsl:with-param name="thislink"></xsl:with-param>
</xsl:call-template>
--> 
<xsl:template name="site-link">
	<xsl:param name="thislink"/>
	<xsl:call-template name='url'>
		<xsl:with-param name="link" select="$thislink"/>
	</xsl:call-template>
</xsl:template>

<!-- Template to insert linked, named image (name as defined in x_site.xml) call as:
<xsl:call-template name="site-img">
	<xsl:with-param name="thisname"></xsl:with-param>
	<xsl:with-param name="thisalign"></xsl:with-param>
	<xsl:with-param name="thisclass"></xsl:with-param>
	<xsl:with-param name="thisbord"></xsl:with-param>
	<xsl:with-param name="thislink"></xsl:with-param>
</xsl:call-template>
-->
<xsl:template name="site-img-link">
	<xsl:param name="thisname"/>
	<xsl:param name="thisalign"/>
	<xsl:param name="thisclass"/>
	<xsl:param name="thisbord"/>
	<xsl:param name="thislink"/>
	<a>
		<xsl:attribute name="href">
			<xsl:choose>
				<xsl:when test="$want_template='yes'">{%iwlnk<xsl:value-of select="$thislink"/>%}</xsl:when>
				<xsl:otherwise>
					<xsl:call-template name='url'>
						<xsl:with-param name="link" select="$thislink"/>
					</xsl:call-template>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:attribute>
		<xsl:call-template name="site-img">
			<xsl:with-param name="thisname" select="$thisname"/>
			<xsl:with-param name="thisalign" select="$thisalign"/>
			<xsl:with-param name="thisclass" select="$thisclass"/>
			<xsl:with-param name="thisbord" select="$thisbord"/>
		</xsl:call-template>
	</a>
</xsl:template>

<!-- Template to insert named image (name as defined in x_site.xml) call as:
<xsl:call-template name="site-img">
	<xsl:with-param name="thisname"></xsl:with-param>
	<xsl:with-param name="thisalign"></xsl:with-param>
	<xsl:with-param name="thisclass"></xsl:with-param>
	<xsl:with-param name="thisbord"></xsl:with-param>
	<xsl:with-param name="wanthand"></xsl:with-param>
	<xsl:with-param name="thisclick"></xsl:with-param>
</xsl:call-template>
-->
<xsl:template name="site-img">
	<xsl:param name="thisname"/>
	<xsl:param name="thisalign"/>
	<xsl:param name="thisclass"/>
	<xsl:param name="thisbord"/>
	<xsl:param name="wanthand"/>
	<xsl:param name="thisclick"/>
		<img>
			<xsl:if test="$thisalign">
				<xsl:attribute name="align"><xsl:value-of select="$thisalign"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$thisclass">
				<xsl:attribute name="class"><xsl:value-of select="$thisclass"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$thisbord">
				<xsl:attribute name="border"><xsl:value-of select="$thisbord"/></xsl:attribute>
			</xsl:if>
			<xsl:attribute name="src"><xsl:value-of select="$x_site/images/@dir"/><xsl:text>/</xsl:text><xsl:value-of select="$x_site/images/image[@name=$thisname]"/></xsl:attribute>
			<xsl:if test="$x_site/images/image[@name=$thisname]/@width">
				<xsl:attribute name="width"><xsl:value-of select="$x_site/images/image[@name=$thisname]/@width"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$x_site/images/image[@name=$thisname]/@height">
				<xsl:attribute name="height"><xsl:value-of select="$x_site/images/image[@name=$thisname]/@height"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$x_site/images/image[@name=$thisname]/@label">
				<xsl:attribute name="alt"><xsl:value-of select="$x_site/images/image[@name=$thisname]/@label"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$wanthand">
				<xsl:attribute name="onMouseOver"><xsl:text>this.style.cursor='hand';</xsl:text></xsl:attribute>
			</xsl:if>
			<xsl:if test="$thisclick">
				<xsl:attribute name="onclick"><xsl:value-of select="$thisclick"/></xsl:attribute>
			</xsl:if>
		</img>
</xsl:template>

<xsl:template name="backtotop">
	<xsl:param name="want_text"/>
	<xsl:choose>
		<xsl:when test="$want_text='yes'">
			<span class="x_content-txthd"><a href="#topofpage">Back to top</a></span>
			<xsl:call-template name="nobrspace"/>
				<input width="5" type="Button" class="x_content-btn" value="^" align="top">
					<xsl:attribute name="onclick">
						<xsl:text>javascript:x_goto("top")</xsl:text>
					</xsl:attribute>
				</input>
		</xsl:when>
		<xsl:otherwise>
			<a href="javascript:x_goto('top')"><span class="link-text">Back to top</span></a>
			<a href="javascript:x_goto('top')">
				<img align="top">
					<xsl:attribute name="src"><xsl:value-of select="$img_root"/><xsl:value-of select="$x_site/images/image[@name='top_icon']"/></xsl:attribute>
					<xsl:attribute name="width"><xsl:value-of select="$x_site/images/image[@name='top_icon']/@width"/></xsl:attribute>
					<xsl:attribute name="height"><xsl:value-of select="$x_site/images/image[@name='top_icon']/@height"/></xsl:attribute>
				</img></a>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<xsl:template name="closewin">
	<xsl:param name="want_text"/>
	<xsl:choose>
		<xsl:when test="$want_text='yes'">
			<span class="x_content-txthd"><a href="#topofpage">Back to top</a></span>
			<xsl:call-template name="nobrspace"/>
				<input width="5" type="Button" class="x_content-btn" value="^" align="top">
					<xsl:attribute name="onclick">
						<xsl:text>javascript:x_goto("top")</xsl:text>
					</xsl:attribute>
				</input>
		</xsl:when>
		<xsl:otherwise>
			<a href="#" onclick="parent.window.close();"><img align="middle" src="images/close_icon.gif" height="14" width="14"/></a>
			<a href="#" onclick="parent.window.close();"><span class="x_foot-navtxt">close window</span></a>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<!-- These templates handle no-break-spaces of various sizes (determined by css class)-->
<xsl:template name="deci_space"><span class="deci"><xsl:call-template name="nobrspace"/></span></xsl:template>
<xsl:template name="centi_space"><span class="centi"><xsl:call-template name="nobrspace"/></span></xsl:template>
<xsl:template name="milli_space"><span class="milli"><xsl:call-template name="nobrspace"/></span></xsl:template>
<xsl:template name="micro_space"><span class="micro"><xsl:call-template name="nobrspace"/></span></xsl:template>
<xsl:template name="pico_space"><span class="pico"><xsl:call-template name="nobrspace"/></span></xsl:template>
<xsl:template name="nano_space"><span class="nano"><xsl:call-template name="nobrspace"/></span></xsl:template>

<!-- this template inserts a 'no-break-space' and hadles when output is to xsl -->
<xsl:template name='nobrspace'>
	<xsl:choose>
		<xsl:when test="$want_xslout='yes'">
			<xsl:text disable-output-escaping="yes"><![CDATA[<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[></xsl:text>]]></xsl:text>
		</xsl:when>
		<xsl:otherwise>
			<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<xsl:template name='apostrophe'>
	<xsl:choose>
		<xsl:when test="$want_xslout='yes'">
			<xsl:text disable-output-escaping="yes"><![CDATA[<xsl:text disable-output-escaping="yes"><![CDATA[&#39;]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[></xsl:text>]]></xsl:text>
		</xsl:when>
		<xsl:otherwise>
			<xsl:text disable-output-escaping="yes"><![CDATA[&#39;]]></xsl:text>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<!-- this template inserts a '>' and hadles when output is to xsl -->
<xsl:template name="rightcaret">
	<xsl:choose>
		<xsl:when test="$want_xslout='yes'">
			<xsl:text disable-output-escaping="yes"><![CDATA[<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;&gt;]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[></xsl:text>]]></xsl:text>
		</xsl:when>
		<xsl:otherwise>
			<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;&gt;]]></xsl:text>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>


<!-- this template inserts a 'marker' comment into the html -->
<xsl:template name="template_marker">
	<xsl:param name="label"></xsl:param>
	<xsl:value-of select='$newline'/>
	<xsl:value-of select='$newline'/>
	<xsl:text disable-output-escaping="yes"><![CDATA[<!-- =====================]]></xsl:text>
	<xsl:value-of select="$label"/> 
	<xsl:text disable-output-escaping="yes"><![CDATA[===================== -->]]></xsl:text>
	<xsl:value-of select='$newline'/>
	<xsl:value-of select='$newline'/>
</xsl:template>

<!-- this template formats the src attribute value of an image tag -->
<xsl:template name="img_src">
	<xsl:param name="img_name"></xsl:param>
	<xsl:value-of select="$img_root"/><xsl:value-of select="$img_name"/>
</xsl:template>

<xsl:template match="html">
	<xsl:copy-of select="child::*"/>
</xsl:template>

<xsl:template name="row-break">
	<xsl:text disable-output-escaping="yes"><![CDATA[</tr><tr>]]></xsl:text>
</xsl:template>

<xsl:template name="form-date">
	<xsl:param name="thisdate"/>
	<xsl:value-of select="substring($thisdate, 1, 4)"/>
	<xsl:text>-</xsl:text>
	<xsl:value-of select="substring($thisdate, 5, 2)"/>
	<xsl:text>-</xsl:text>
	<xsl:value-of select="substring($thisdate, 7, 2)"/>
</xsl:template>

</xsl:stylesheet>
